//package com.xls.commonlibrary.ad.sigmob.ads.splash;
//
//import android.app.Activity;
//import android.content.Context;
//import android.os.Build;
//import android.text.TextUtils;
//import android.util.DisplayMetrics;
//import android.view.Display;
//import android.view.DisplayCutout;
//import android.view.View;
//import android.view.ViewGroup;
//import android.view.ViewParent;
//import android.view.WindowInsets;
//import android.view.WindowManager;
//import android.widget.FrameLayout;
//import android.widget.LinearLayout;
//import android.widget.RelativeLayout;
//
//import java.lang.reflect.InvocationTargetException;
//import java.lang.reflect.Method;
//
///**
// * Created by bytedance on 2019/9/5.
// */
//
//public class UIUtils {
//
//    public static float getScreenWidthDp(Context context) {
//        final float scale = context.getResources().getDisplayMetrics().density;
//        float width = context.getResources().getDisplayMetrics().widthPixels;
//        return width / (scale <= 0 ? 1 : scale) + 0.5f;
//    }
//
//    //全面屏、刘海屏适配
//    public static float getHeight(Activity activity) {
//        hideBottomUIMenu(activity);
//        float height;
//        int realHeight = getRealHeight(activity);
//        if (UIUtils.hasNotchScreen(activity)) {
//            height = px2dip(activity, realHeight - getStatusBarHeight(activity));
//        } else {
//            height = px2dip(activity, realHeight);
//        }
//        return height;
//    }
//
//    public static void hideBottomUIMenu(Activity activity) {
//        if (activity == null) {
//            return;
//        }
//        try {
//            //隐藏虚拟按键，并且全屏
//            if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower api
//                View v = activity.getWindow().getDecorView();
//                v.setSystemUiVisibility(View.GONE);
//            } else if (Build.VERSION.SDK_INT >= 19) {
//                //for new api versions.
//                View decorView = activity.getWindow().getDecorView();
//                int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
//                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
//                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
//                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
//                        //                    | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
//                        | View.SYSTEM_UI_FLAG_IMMERSIVE;
//                decorView.setSystemUiVisibility(uiOptions);
//                activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
//
//    //获取屏幕真实高度，不包含下方虚拟导航栏
//    public static int getRealHeight(Context context) {
//        WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
//        Display display = windowManager.getDefaultDisplay();
//        DisplayMetrics dm = new DisplayMetrics();
//        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
//            display.getRealMetrics(dm);
//        } else {
//            display.getMetrics(dm);
//        }
//        int realHeight = dm.heightPixels;
//        return realHeight;
//    }
//
//    //获取状态栏高度
//    public static float getStatusBarHeight(Context context) {
//        float height = 0;
//        int resourceId = context.getApplicationContext().getResources().getIdentifier("status_bar_height", "dimen", "android");
//        if (resourceId > 0) {
//            height = context.getApplicationContext().getResources().getDimensionPixelSize(resourceId);
//        }
//        return height;
//    }
//
//    public static int px2dip(Context context, float pxValue) {
//        final float scale = context.getResources().getDisplayMetrics().density;
//        return (int) (pxValue / (scale <= 0 ? 1 : scale) + 0.5f);
//    }
//
//    public static int dp2px(Context context, float dp) {
//        final float scale = context.getResources().getDisplayMetrics().density;
//        return (int) (dp * scale + 0.5f);
//    }
//
//    /**
//     * 判断是否是刘海屏
//     *
//     * @return
//     */
//    public static boolean hasNotchScreen(Activity activity) {
//        return isAndroidPHasNotch(activity)
//                || getInt("ro.miui.notch", activity) == 1
//                || hasNotchAtHuawei(activity)
//                || hasNotchAtOPPO(activity)
//                || hasNotchAtVivo(activity);
//    }
//
//    /**
//     * Android P 刘海屏判断
//     *
//     * @param activity
//     * @return
//     */
//    public static boolean isAndroidPHasNotch(Activity activity) {
//        boolean result = false;
//        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
//            DisplayCutout displayCutout = null;
//            try {
//                WindowInsets windowInsets = activity.getWindow().getDecorView().getRootWindowInsets();
//                if (windowInsets != null) {
//                    displayCutout = windowInsets.getDisplayCutout();
//                }
//                if (displayCutout != null) {
//                    result = true;
//                }
//            } catch (Exception e) {
//                e.printStackTrace();
//            }
//        }
//        return result;
//    }
//
//    /**
//     * 小米刘海屏判断.
//     *
//     * @return 0 if it is not notch ; return 1 means notch
//     * @throws IllegalArgumentException if the key exceeds 32 characters
//     */
//    public static int getInt(String key, Activity activity) {
//        int result = 0;
//        if (isMiui()) {
//            try {
//                ClassLoader classLoader = activity.getClassLoader();
//                @SuppressWarnings("rawtypes")
//                Class SystemProperties = classLoader.loadClass("android.os.SystemProperties");
//                //参数类型
//                @SuppressWarnings("rawtypes")
//                Class[] paramTypes = new Class[2];
//                paramTypes[0] = String.class;
//                paramTypes[1] = int.class;
//                Method getInt = SystemProperties.getMethod("getInt", paramTypes);
//                //参数
//                Object[] params = new Object[2];
//                params[0] = new String(key);
//                params[1] = new Integer(0);
//                result = (Integer) getInt.invoke(SystemProperties, params);
//
//            } catch (ClassNotFoundException e) {
//                e.printStackTrace();
//            } catch (NoSuchMethodException e) {
//                e.printStackTrace();
//            } catch (IllegalAccessException e) {
//                e.printStackTrace();
//            } catch (IllegalArgumentException e) {
//                e.printStackTrace();
//            } catch (InvocationTargetException e) {
//                e.printStackTrace();
//            }
//        }
//        return result;
//    }
//
//    /**
//     * 华为刘海屏判断
//     *
//     * @return
//     */
//    public static boolean hasNotchAtHuawei(Context context) {
//        boolean ret = false;
//        try {
//            ClassLoader classLoader = context.getClassLoader();
//            Class HwNotchSizeUtil = classLoader.loadClass("com.huawei.android.util.HwNotchSizeUtil");
//            Method get = HwNotchSizeUtil.getMethod("hasNotchInScreen");
//            ret = (boolean) get.invoke(HwNotchSizeUtil);
//        } catch (ClassNotFoundException e) {
//        } catch (NoSuchMethodException e) {
//        } catch (Exception e) {
//        } finally {
//            return ret;
//        }
//    }
//
//    public static final int VIVO_NOTCH = 0x00000020;//是否有刘海
//    public static final int VIVO_FILLET = 0x00000008;//是否有圆角
//
//    /**
//     * VIVO刘海屏判断
//     *
//     * @return
//     */
//    public static boolean hasNotchAtVivo(Context context) {
//        boolean ret = false;
//        try {
//            ClassLoader classLoader = context.getClassLoader();
//            Class FtFeature = classLoader.loadClass("android.util.FtFeature");
//            Method method = FtFeature.getMethod("isFeatureSupport", int.class);
//            ret = (boolean) method.invoke(FtFeature, VIVO_NOTCH);
//        } catch (ClassNotFoundException e) {
//        } catch (NoSuchMethodException e) {
//        } catch (Exception e) {
//        } finally {
//            return ret;
//        }
//    }
//
//    /**
//     * O-P-P-O刘海屏判断
//     *
//     * @return
//     */
//    public static boolean hasNotchAtOPPO(Context context) {
//        String temp = "com.kllk.feature.screen.heteromorphism";
//        String name = getKllkDecryptString(temp);
//        return context.getPackageManager().hasSystemFeature(name);
//    }
//
//    public static boolean isMiui() {
//        boolean sIsMiui = false;
//        try {
//            Class<?> clz = Class.forName("miui.os.Build");
//            if (clz != null) {
//                sIsMiui = true;
//                //noinspection ConstantConditions
//                return sIsMiui;
//            }
//        } catch (Exception e) {
//            // ignore
//        }
//        return sIsMiui;
//    }
//
//    /**
//     * 用于o-p-p-o 版本隐私协议
//     */
//    public static String getKllkDecryptString(String encryptionString) {
//
//        if (TextUtils.isEmpty(encryptionString)) {
//            return "";
//        }
//        String decryptTag = "";
//        String decryptCapitalized = "O" + "P" + "P" + "O";
//        String decrypt = "o" + "p" + "p" + "o";
//        if (encryptionString.contains("KLLK")) {
//            decryptTag = encryptionString.replace("KLLK", decryptCapitalized);
//        } else if (encryptionString.contains("kllk")) {
//            decryptTag = encryptionString.replace("kllk", decrypt);
//        }
//        return decryptTag;
//
//    }
//
//    public static void setViewSize(View view, int width, int height) {
//        if (view.getParent() instanceof FrameLayout) {
//            FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) view.getLayoutParams();
//            lp.width = width;
//            lp.height = height;
//            view.setLayoutParams(lp);
//            view.requestLayout();
//        } else if (view.getParent() instanceof RelativeLayout) {
//            RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) view.getLayoutParams();
//            lp.width = width;
//            lp.height = height;
//            view.setLayoutParams(lp);
//            view.requestLayout();
//        } else if (view.getParent() instanceof LinearLayout) {
//            LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) view.getLayoutParams();
//            lp.width = width;
//            lp.height = height;
//            view.setLayoutParams(lp);
//            view.requestLayout();
//        }
//    }
//
//    public static int getScreenWidthInPx(Context context) {
//        DisplayMetrics dm = context.getApplicationContext().getResources().getDisplayMetrics();
//        return dm.widthPixels;
//    }
//
//    public static int getScreenHeightInPx(Context context) {
//        DisplayMetrics dm = context.getApplicationContext().getResources().getDisplayMetrics();
//        return dm.heightPixels;
//    }
//
//    public static int getScreenHeight(Context context) {
//        return (int) (getScreenHeightInPx(context) + getStatusBarHeight(context));
//    }
//
//    public static void removeFromParent(View view) {
//        if (view != null) {
//            ViewParent vp = view.getParent();
//            if (vp instanceof ViewGroup) {
//                ((ViewGroup) vp).removeView(view);
//            }
//        }
//    }
//
//    /**
//     * 获取全面屏宽高
//     *
//     * @param context
//     * @return
//     */
//    public static int[] getScreenSize(Context context) {
//        int[] size = new int[]{0, 0};
//        if (context == null) {
//            return size;
//        }
//        WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
//        Display display = windowManager.getDefaultDisplay();
//        DisplayMetrics dm = new DisplayMetrics();
//        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
//            display.getRealMetrics(dm);
//        } else {
//            display.getMetrics(dm);
//        }
//        size[0] = dm.widthPixels;
//        size[1] = dm.heightPixels;
//        return size;
//    }
//}
